package logica;


import java.util.Vector;

import excepciones.ContenidoException;
import excepciones.DataStructureException;

import logica.analizador.AnalizadorSintactico;
import logica.analizador.DocumentoJerarquicoEnlazado;
import logica.common.NodoColor;
import logica.estructura.RedSemantica;


public class Tester {
	
	public void prueba(final Vector vector)
	{
		System.out.println(vector.size());
	}

	public static void main(String[] args) {

		String texto1= 	"<sec>" +
							"<tit> El ingenioso Hidalgo Don Quijote de la Mancha </tit>" +
							"<con>" +
								"<sec>" +
									"<tit> Capitulo 1  </tit>" +
									"<con>" +
										"En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no hace mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor..." +
									"</con>" +
								"</sec>" +
								"<sec>" +
									"<tit>Capítulo 2</tit>" +
									"<con>" +
										"En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no hace mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor..." +
									"</con>" +
								"</sec>" +
								"<sec>" +
									"<tit> El ingenioso Hidalgo Don Quijote de la Mancha </tit>" +
									"<con>" +
										"<sec>" +
											"<tit> Capitulo 1  </tit>" +
											"<con>" +
												"En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no hace mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor..." +
											"</con>" +
										"</sec>" +
										"<sec>" +
											"<tit>Capítulo 2</tit>" +
											"<con>" +
												"En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no hace mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor..." +
											"</con>" +
										"</sec>" +
									"</con>" +
								"</sec>" +								
							"</con>" +
						"</sec>"; /* +
						"<sec>" +
							"<tit> El ingenioso Hidalgo Don Quijote de la Mancha </tit>" +
							"<con>" +
								"<sec>" +
									"<tit> Capitulo 1  </tit>" +
									"<con>" +
										"En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no hace mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor..." +
									"</con>" +
								"</sec>" +
								"<sec>" +
									"<tit>Capítulo 2</tit>" +
									"<con>" +
										"En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no hace mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor..." +
									"</con>" +
								"</sec>" +
							"</con>" +
						"</sec>";						
*/
		String texto2= "<sec>\n" +
						"	<tit>\n El ingenioso Hidalgo Don Quijote de la Mancha </tit>\n" +
						"	<con>\n" +
						"		<sec>\n" +
						"			<tit>\n Capitulo 1  </tit>\n" +
						"			<con>\n" +
						"				En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no hace mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor..." +
						"			</con>\n" +
						"		</sec>\n" +
						"		<sec>\n" +
						"			<tit>\nCapítulo 2</tit>\n" +
						"			<con>\n" +
						"				En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no hace mucho tiempo que vivía un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor..." +
						"			</con>\n" +
						"		</sec>\n" +
						"</con>\n" +
						"</sec>\n";


		String textoEnlazado1= /*"<sec>\n" +
								"	<tit> Raiz </tit>\n" +
 								"	<con> " +
*/								"	<sec>\n" +
								"		<tit> Prologo </tit>\n" +
								"		<con> Con este texto se verá un capítulo de la introduccion a la \n" +
								"		<ira> <vin> Complejidad </vin> <eti> complejidad </eti> </ira> y luego se estudiaran \n" +
								"		los temas de <ira> <vin> Est. De Datos dinamicas basicas </vin> <eti> estructuras de \n" + 
								"		datos basicas </eti> </ira> y <ira> <vin> Otras est. De datos \n" + 
								"		</vin> <eti> otras estructuras de datos </eti> </ira> " +
								"		</con> \n" +								
								"	</sec>\n" +
								"	<sec>\n" +
								"		<tit> Complejidad </tit>\n" +
								"		<con> La funcion O mide la tendencia de crecimiento de la cantidad de trabajo del \n" +
								"		algoritmo cuando los datos crecen. \n" +
								"		Hay complejidades constantes como el caso de las <ira> <vin> Pilas </vin> <eti> \n" +								
								"		pilas </eti> </ira>, cuadraticas y logaritmicas con el caso de las <ira> <vin>   \n" + 
								"		Colas con Prioridad </vin> <eti> Colas con Prioridad </eti> </ira>, .. " +
								"		</con> \n" + 
								"	</sec>\n" +
								"	<sec>\n" +
								"		<tit> Est. De Datos dinamicas basicas </tit>\n" +
								"		<con> " +
								"		En este topico se ven <ira> <vin> Pilas </vin> <eti> pilas </eti> </ira> y \n" +
								"		<ira> <vin> Colas </vin> <eti> colas </eti> </ira>. En otros capitulos se veran casos \n" +
								"		especiales como <ira> <vin> Colas con Prioridad </vin> <eti> colas con prioridad \n" + 
								"		</eti> </ira> \n" + 
								"		<sec>\n" +
								"			<tit> Pilas </tit>\n" +
								"			<con> Son estructuras lineales con complejidad 1 para la insercion y la  \n" +
								"			eliminacion <ira> <vin> Complejidad </vin> <eti> complejidad </eti> </ira>. \n" +
								"			</con> \n" + 
								"		</sec>\n" +								
								"		<sec>\n" +
								"			<tit> Colas </tit>\n" +
								"			<con> Son simples, se pueden implementar con arreglos como las <ira> <vin> \n" +
								"			Colas con Prioridad </vin> <eti> colas con prioridad </eti> </ira>. " +
								"			</con> " +
								"		</sec>\n" +								
								"		</con>\n" +
								"	</sec>\n" +								
								"	<sec>\n" +
								"		<tit> Otras est. De datos </tit>\n" +
								"		<con> Hay varias, otras..  \n" + 
								"		<sec>\n" +
								"			<tit> Colas con Prioridad </tit>\n" +
								"			<con> Son estructuras de datos dinamicas especiales. Son una extension de las \n" +
								"			<ira> <vin> Colas </vin> <eti> colas </eti> </ira>. Su <ira> <vin> " +
								"  		 	Complejidad </vin> <eti> complejidad </eti> </ira> es logaritmica. " +
								"			</con> " +
								"		</sec>\n" +								
								"		</con> \n" + 
/*								"	</sec>\n" +
								"	</con> \n" + 
*/								"</sec>\n" ;

		
		AnalizadorSintactico aA = new AnalizadorSintactico(textoEnlazado1);
		//AnalizadorSintactico aB = new AnalizadorSintactico(texto2);
		
		try {
			if (aA.validar()) // && aB.validar())
			{
				System.out.println("Exito, la sintaxis del texto esta de pelos!!!");
			
				//Creamos el doc jerarquico
				//DocumentoJerarquico dJ1 = new DocumentoJerarquico(texto1);
				//DocumentoJerarquico dJ2 = new DocumentoJerarquico(texto2);
				DocumentoJerarquicoEnlazado dJE1 = new DocumentoJerarquicoEnlazado(textoEnlazado1);
				
				Vector texto = new Vector(); 
				texto = dJE1.getSeccion("");
				
				//System.out.println("Titulos: " + dJE1.getTitulos());
				
				//RedSemantica rD = new RedSemantica (dJE1);
				
				//Vector cam = rD.caminos(new NodoColor("Prologo"), new NodoColor("Colas"));
				
				//System.out.println(cam.toString());
				
				//System.out.println("lista nodos sumideros:" + rD.nodosSumideros());
				
				//System.out.println("lista nodos ciclos:" + rD.ciclos());
				
				
				//Armamos los arboles.
				//NTreeDocumento nTDoc1 = new NTreeDocumento(dJ1.getTitulo());
				//nTDoc1.createTreeFromRoot(nTDoc1, dJ1);
				//Armamos los arboles.
				//NTreeDocumento nTDoc2 = new NTreeDocumento(dJ2.getTitulo());
				//nTDoc2.createTreeFromRoot(nTDoc2, dJ2);
				
				//Fusionamos ambos arboles
				//NTreeDocumento nTArbolFusion = nTDoc1.fusionarArboles(nTDoc2);
				
				//System.out.println(nTDoc.renderizar(false, 0, 1));
			}
			else
			{
				System.out.println("Fracaso, sorry pal :( tenes una bad sintaxis. ");
			}
		} catch (DataStructureException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (ContenidoException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
}
